﻿namespace SpaceshipDuelConfig
{
    /// <summary>
    /// Struktur für die Wörterbucheinträge
    /// erstmal nur für deutsch und englisch
    /// </summary>
    public struct DictEntry
    {
        public DictEntry (string refStr, string gerStr, string engStr)
        {
            referenceString = refStr;
            germanString    = gerStr;
            englishString   = engStr;
        }

        public string referenceString;
        public string germanString;
        public string englishString;
    }

    /// <summary>
    /// Statische Wörterbuch-Klasse zur Übersetzung aller Texte auf der GUI
    /// </summary>
    public static class Dictionary
    {
        #region Private fields

        private static DictEntry[] myDictionary;    // Wörterbuch

        #endregion Private fields

        #region Construction

        /// <summary>
        /// statischer Konstruktor
        /// </summary>
        static Dictionary()
        {
            // Definition aller Übersetzungen - könnte man auch in eine eigene Datei/Datenbank auslagern
            // wenn die Anzahl höher wäre, aber für diese Anwendung wäre es wohl etwas übertrieben
            myDictionary = new DictEntry[]
            {
                new DictEntry("Spaceship Duel Konfiguration", "Spaceship Duel Konfiguration", "Spaceship Duel Configuration"), 
                new DictEntry("Grafik", "Grafik", "Graphics"), 
                new DictEntry("Sound", "Sound", "Sound"), 
                new DictEntry("Steuerung", "Steuerung", "Controls"), 
                new DictEntry("Spiel", "Spiel", "Game"), 
                new DictEntry("Bildschirmauflösung:", "Bildschirmauflösung:", "Screen resolution:"), 
                new DictEntry("Speichere Konfiguration", "Speichere Konfiguration", "Save configuration"), 
                new DictEntry("Starte Spiel", "Starte Spiel", "Start game"), 
                new DictEntry("Vollbildmodus", "Vollbildmodus", "Full screen mode"), 
                new DictEntry("Fenster", "Fenster", "Window mode"), 
                new DictEntry("Partikeleffekte:", "Partikeleffekte:", "Particle effects:"), 
                new DictEntry("Anzahl der Frames pro Sekunde (FPS) einblenden", "Anzahl der Frames pro Sekunde (FPS) einblenden", "Show value of frames per second (FPS)"), 
                new DictEntry("Lautstärke Musik:", "Lautstärke Musik:", "Music volume:"), 
                new DictEntry("Lautstärke Soundeffekte:", "Lautstärke Soundeffekte:", "Sound effects volume:"), 
                new DictEntry("Spieler 1", "Spieler 1", "Player 1"), 
                new DictEntry("Spieler 2", "Spieler 2", "Player 2"), 
                new DictEntry("Vorwärts", "Vorwärts", "Move forward"), 
                new DictEntry("Rückwärts", "Rückwärts", "Move backward"), 
                new DictEntry("Links drehen", "Links drehen", "Turn left"), 
                new DictEntry("Rechts drehen", "Rechts drehen", "Turn right"),
                new DictEntry("Feuer", "Feuer", "Fire"), 
                new DictEntry("Spezial", "Spezial", "Special"), 
                new DictEntry("Spielfeldgröße:", "Spielfeldgröße:", "World size:"), 
                new DictEntry("Anzahl Asteroiden:", "Anzahl Asteroiden:", "Number of asteroids:"), 
                new DictEntry("Anzahl Gegner:", "Anzahl Gegner:", "Number of enemies:"), 
                new DictEntry("Anzahl Leben:", "Anzahl Leben:", "Number of lives:"), 
                new DictEntry("keine", "keine", "none"), 
                new DictEntry("wenig", "wenig", "little"), 
                new DictEntry("normal", "normal", "normal"), 
                new DictEntry("viele", "viele", "many"),
                new DictEntry("sehr viele", "sehr viele", "a lot"), 
                new DictEntry("Alt links", "Alt links", "Alt left"), 
                new DictEntry("Alt rechts", "Alt rechts", "Alt right"), 
                new DictEntry("Cursor hoch", "Cursor hoch", "Cursor up"), 
                new DictEntry("Cursor runter", "Cursor runter", "Cursor down"), 
                new DictEntry("Cursor links", "Cursor links", "Cursor left"), 
                new DictEntry("Cursor rechts", "Cursor rechts", "Cursor right"), 
                new DictEntry("Shift links", "Shift links", "Shift left"), 
                new DictEntry("Shift rechts", "Shift rechts", "Shift right"), 
                new DictEntry("Strg links", "Strg links", "Ctrl left"),
                new DictEntry("Strg rechts", "Strg rechts", "Ctrl right"), 
                new DictEntry("Num 0", "Num 0", "Keypad 0"), 
                new DictEntry("Num 1", "Num 1", "Keypad 1"), 
                new DictEntry("Num 2", "Num 2", "Keypad 2"), 
                new DictEntry("Num 3", "Num 3", "Keypad 3"), 
                new DictEntry("Num 4", "Num 4", "Keypad 4"), 
                new DictEntry("Num 5", "Num 5", "Keypad 5"), 
                new DictEntry("Num 6", "Num 6", "Keypad 6"), 
                new DictEntry("Num 7", "Num 7", "Keypad 7"), 
                new DictEntry("Num 8", "Num 8", "Keypad 8"),
                new DictEntry("Num 9", "Num 9", "Keypad 9"),
                new DictEntry("Zufall", "Zufall", "Random"),
                new DictEntry("sehr klein", "sehr klein", "very small"),
                new DictEntry("klein", "klein", "small"),
                new DictEntry("mittel", "mittel", "medium"),
                new DictEntry("groß", "groß", "large"),
                new DictEntry("riesig", "riesig", "tremendous")
            };
        }

        #endregion Construction

        #region Public methods

        /// <summary>
        /// Abfrage eines übersetzten Strings
        /// </summary>
        /// <param name="referenceString">Referenzstring</param>
        /// <param name="Language">Sprache</param>
        /// <returns>Übersetzter String</returns>
        public static string GetTranslation(string referenceString, string Language)
        {
            if (Language != "Deutsch" && Language != "English")
                return "Language missing";

            foreach (DictEntry de in myDictionary)
            {
                if (de.referenceString == referenceString)
                {
                    if (Language == "Deutsch")
                        return de.germanString;
                    if (Language == "English")
                        return de.englishString;
                }
            }
            return "Translation missing";   // falls Übersetzung nicht vorhanden ist
        }

        /// <summary>
        /// Abfrage eines Referenzstrings
        /// </summary>
        /// <param name="langString">String in der angegebenen Sprache</param>
        /// <param name="Language">Sprache</param>
        /// <returns>Referenzstring (wenn keine Übersetzung vorhanden ist, dann Eingabestring)</returns>
        public static string GetRefString(string langString, string Language)
        {
            if (Language != "Deutsch" && Language != "English")
                return "Language missing";

            foreach (DictEntry de in myDictionary)
            {
                if ((Language == "Deutsch" && de.germanString == langString) || (Language == "English" && de.englishString == langString))
                    return de.referenceString;
            }
            return langString;  // Falls keine Übersetzung existiert, Eingabestring zurückliefern (z.B. für Tasten "A", "B", "C"...)
        }

        #endregion Public methods
    }
}
